package org.springblade.dev.template;

import com.baomidou.mybatisplus.generator.config.*;

import java.util.List;
import java.util.Map;
import java.util.Properties;

/**
 * 保留版权 : CopyRright (c) 2024-2024 于继业 版权所有
 * 文件名称 : TemplateProject
 * 文件编号 : 1-1-1
 * 文件版本 : 2024-01-16.01
 * 创建日期 : 2024-01-16
 * 修改人名 :
 * 修改日期 :
 * 功能描述 :
 *
 * @author 于继业
 */
public abstract class BaseGenerator {


    /**
     * 全局配置
     *
     * @param props           属性文件
     * @param projectRootPath 项目根路径
     */
    public abstract GlobalConfig globalConfig(String projectRootPath, Properties props);

    /**
     * 包配置
     *
     * @param moduleName 服务名称
     * @return {@link PackageConfig}
     */
    public abstract PackageConfig packageConfig(String moduleName);

    /**
     * 模板配置
     */
    public abstract TemplateConfig templateConfig();

    /**
     * 注入配置
     *
     * @param customMap     自定义属性
     * @param packageWebDir 前端文件生成路径
     * @param serviceName   服务名称
     * @return {@link InjectionConfig}
     */
    public abstract InjectionConfig injectionConfig(Map<String, Object> customMap, String packageWebDir, String serviceName);

    /**
     * 策略配置
     *
     * @param offSetTablePrefix  需要抵消的表前缀
     * @param tables             设置生成需要映射的表名
     * @param superEntityColumns 添加父类公共字段
     */
    public abstract StrategyConfig strategyConfig(String offSetTablePrefix, List<String> tables, String[] superEntityColumns);
}
